<?php
/**
 * Implenta las funciones necesarias para gestionar aluminio
 *
 * @author Daniel Cardoza, Gary Dos Santos, Freddy Rodriguez
 */
class DBAluminioDAO {

    private $DBConn = null;

    public function  __construct() {
        $conexion = new conexion();
        $this->DBConn = $conexion->setConnect();
    }

     /**
     *Devuelve el precio del id del aluminio que entra por parametro y el color
     * indica que columna de precio se va a retornar
     *
     * @param <int> $id
     * @param <int> $color
     * @return <Array> $fila['CAL_ANONI_PLATA']
     * @return <Array> $fila['CAL_ANONI_BRONCE']
     * @return <Array> $fila['CAL_PINT_BN']
     * @return <Array> $fila['CAL_PINT_OTRO']
     * @return <bool> false
     * @test
     *
     */
    public function getPrecio( $id , $color ) {
        switch ( $color ){
            case "1" : $this->DBConn->consulta( "SELECT CAL_ANONI_PLATA
                            FROM costo_aluminio
                            WHERE CAL_ID = $id
                            AND CAL_STATUS = 1" );

                        if ( $this->DBConn->filasAfectadas() != -1){
                            $fila = $this->DBConn->extraer_registro();
                            return $fila['CAL_ANONI_PLATA'];
                        } else {
                            return false;
                        }
                        break;

            case "2" : $this->DBConn->consulta( "SELECT CAL_ANONI_BRONCE
                            FROM costo_aluminio
                            WHERE CAL_ID = $id
                            AND CAL_STATUS = 1" );

                        if ( $this->DBConn->filasAfectadas() != -1){
                            $fila = $this->DBConn->extraer_registro();
                            return $fila['CAL_ANONI_BRONCE'];
                        } else {
                            return false;
                        }
                        break;

            case "3" : $this->DBConn->consulta( "SELECT CAL_PINT_BN
                            FROM costo_aluminio
                            WHERE CAL_ID = $id
                            AND CAL_STATUS = 1" );

                        if ( $this->DBConn->filasAfectadas() != -1){
                            $fila = $this->DBConn->extraer_registro();
                            return $fila['CAL_PINT_BN'];
                        } else {
                            return false;
                        }
                        break;

            case "4" : $this->DBConn->consulta( "SELECT CAL_PINT_OTRO
                            FROM costo_aluminio
                            WHERE CAL_ID = $id
                            AND CAL_STATUS = 1" );

                        if ( $this->DBConn->filasAfectadas() != -1){
                            $fila = $this->DBConn->extraer_registro();
                            return $fila['CAL_PINT_OTRO'];
                        } else {
                            return false;
                        }
                        break;
                        
        }

    }

    /**
     * Setea un bloque con la informacion del tipo aluminio
     *
     * @param <panel> $plantillaCON
     * @param <block> $block
     * @test
     */
    public function setBlockTipo( $plantillaCON , $block ) {
        $hBlock = $plantillaCON->setBlock( $block );
        $this->DBConn->consulta( "SELECT CAL_ID, CAL_TIPO
                            FROM costo_aluminio
                            WHERE CAL_STATUS = 1
                            GROUP BY CAL_TIPO" );

        while ( $fila = $this->DBConn->extraer_registro() ) {
            $plantillaCON->add( $fila );
            $plantillaCON->concat( $hBlock );
        }

    }

    /**
     * Setea un bloque con la informacion del aluminio
     *
     * @param <panel> $plantillaCON
     * @param <block> $block
     * @test
     */
    public function setBlock( $plantillaCON , $block ) {
        $hBlock = $plantillaCON->setBlock( $block );
        $this->DBConn->consulta( "SELECT *
                            FROM costo_aluminio
                            WHERE CAL_STATUS = 1" );

        while ( $fila = $this->DBConn->extraer_registro() ) {
            $fila['CAL_ANONI_PLATA'] = number_format( $fila['CAL_ANONI_PLATA'], 2, ",", "." );
            $fila['CAL_ANONI_BRONCE'] = number_format( $fila['CAL_ANONI_BRONCE'], 2, ",", "." );
            $fila['CAL_PINT_BN'] = number_format( $fila['CAL_PINT_BN'], 2, ",", "." );
            $fila['CAL_PINT_OTRO'] = number_format( $fila['CAL_PINT_OTRO'], 2, ",", "." );
            $plantillaCON->add( $fila );
            $plantillaCON->concat( $hBlock );
        }

    }

     /**
     * Setea un bloque con la informacion de el nombre del aluminio
     *
     * @param <panel> $plantillaCON
     * @param <block> $block
     * @test
     */
    public function setBlockNombre( $plantillaCON , $block, $id ) {
        $hBlock = $plantillaCON->setBlock( $block );
        $this->DBConn->consulta( "SELECT CAL_ID, CAL_NOMBRE
                            FROM costo_aluminio
                            WHERE CAL_TIPO IN (
                            SELECT CAL_TIPO
                            FROM costo_aluminio
                            WHERE CAL_ID = $id)" );

        while ( $fila = $this->DBConn->extraer_registro() ) {
            $plantillaCON->add( $fila );
            $plantillaCON->concat( $hBlock );
        }

    }

    
     /**
     *Devuelve el nombre del id del aluminio que entra por parametro
     *
     * @param <int> $id
     * @return <int> $fila['CAL_NOMBRE']
     * @return <bool> false
     * @test
     *
     */
    public function getNombre( $id ) {
        $this->DBConn->consulta( "SELECT CAL_NOMBRE
                            FROM costo_aluminio
                            WHERE CAL_ID = $id
                            AND CAL_STATUS = 1" );

        if ( $this->DBConn->filasAfectadas() != -1){
            $fila = $this->DBConn->extraer_registro();
            return $fila['CAL_NOMBRE'];
        } else {
            return false;
        }

    }

     /**
     *Devuelve el tipo del id del aluminio que entra por parametro
     *
     * @param <int> $id
     * @return <int> $fila['CAC_PRECIO']
     * @return <bool> false
     * @test
     *
     */
    public function getTipo( $id ) {
        $this->DBConn->consulta( "SELECT CAL_TIPO
                            FROM costo_aluminio
                            WHERE CAL_ID = $id
                            AND CAL_STATUS = 1" );

        if ( $this->DBConn->filasAfectadas() != -1){
            $fila = $this->DBConn->extraer_registro();
            return $fila['CAL_TIPO'];
        } else {
            return false;
        }

    }

     /**
     *Devuelve el contenido del id del aluminio que entra por parametro
     *
     * @param <int> $id
     * @return <int> $fila['CAC_PRECIO']
     * @return <bool> false
     * @test
     *
     */
    public function getContenido( $id ) {
        $this->DBConn->consulta( "SELECT CAL_CONTENIDO
                            FROM costo_aluminio
                            WHERE CAL_ID = $id
                            AND CAL_STATUS = 1" );

        if ( $this->DBConn->filasAfectadas() != -1){
            $fila = $this->DBConn->extraer_registro();
            return $fila['CAL_CONTENIDO'];
        } else {
            return false;
        }

    }

     /**
     *Insertar un Aluminio en la base de datos y lo asigna al id del presupuesto
     * que se pasa por parametro
     *
     * @param <Aluminio> $aluminio
     * @param <int> $PTO_ID
     * @return <bool> true
     * @return <bool> false
     * @test
     *
     */
    public function setAluminio( Aluminio $aluminio , $PTO_ID ) {
        $nombre = $aluminio->getNombre();
        $tipo = $aluminio->getTipo();
        $contenido = $aluminio->getContenido();
        $color = $aluminio->getColor();
        $tipoColor = $aluminio->getTipoColor();
        $ancho = $aluminio->getAncho();
        $precio = $aluminio->getPrecio();
        $cantidad = $aluminio->getCantidad();
        $posicion = $aluminio->getPosicion();

        $this->DBConn->consulta( "INSERT INTO Aluminio (ALM_NOMBRE, ALM_TIPO, ALM_CONTENIDO,ALM_COLOR, ALM_TIPO_COLOR, ALM_ANCHO, ALM_PRECIO, ALM_CANTIDAD)
                                VALUES ('$nombre','$tipo','$contenido','$color','$tipoColor',$ancho,$precio,$cantidad) " );

        $this->DBConn->consulta( "SELECT ALM_ID FROM Aluminio
                        WHERE ALM_NOMBRE = '$nombre'
                        AND ALM_TIPO = '$tipo'
                        AND ALM_COLOR = '$color'
                        AND ALM_TIPO_COLOR = '$tipoColor'
                        AND ALM_ANCHO = $ancho
                        AND ALM_PRECIO = $precio
                        AND ALM_CANTIDAD = $cantidad
                        AND ALM_STATUS = 1
                        ORDER BY ALM_ID DESC " );

        $fila = $this->DBConn->extraer_registro();
            $id = $fila[ 'ALM_ID' ];

        $subTotal = $aluminio->calcularSubTotal();
        
        $this->DBConn->consulta( "INSERT INTO detalle_presupuesto (DPR_SUB_TOTAL,DPR_PTO_ID,DPR_ALM_ID,DPR_POS)
                                VALUES ($subTotal, $PTO_ID, $id,'$posicion')" );

        if ( $this->DBConn->filasAfectadas() != -1){
            return true;
        } else {
            return false;
        }

    }

    /**
     *Actualiza un Aluminio
     *
     * @param $_POST $post
     * @return <bool> true
     * @return <bool> false
     * @test
     *
     */
    public function updateAluminio() {
        extract($_GET);

        $CAL_ANONI_PLATA = doubleval(str_replace(".","",$CAL_ANONI_PLATA));
        $CAL_ANONI_PLATA = doubleval(str_replace(",",".",$CAL_ANONI_PLATA));

        $CAL_ANONI_BRONCE = doubleval(str_replace(".","",$CAL_ANONI_BRONCE));
        $CAL_ANONI_BRONCE = doubleval(str_replace(",",".",$CAL_ANONI_BRONCE));

        $CAL_PINT_BN = doubleval(str_replace(".","",$CAL_PINT_BN));
        $CAL_PINT_BN = doubleval(str_replace(",",".",$CAL_PINT_BN));

        $CAL_PINT_OTRO = doubleval(str_replace(".","",$CAL_PINT_OTRO));
        $CAL_PINT_OTRO = doubleval(str_replace(",",".",$CAL_PINT_OTRO));
        
        $this->DBConn->consulta( "SELECT CAL_TIPO
                                FROM costo_aluminio
                                WHERE CAL_ID = $id;");

        $fila = $this->DBConn->extraer_registro();
        $tipoOld = $fila[ 'CAL_TIPO' ];

        $this->DBConn->consulta( "UPDATE costo_aluminio
                                SET CAL_TIPO = '$CAL_TIPO'
                                WHERE CAL_TIPO = '$tipoOld'" );

        $this->DBConn->consulta( "UPDATE costo_aluminio
                                SET CAL_NOMBRE = '$CAL_NOMBRE',
                                CAL_CONTENIDO = '$CAL_CONTENIDO',
                                CAL_ANONI_PLATA = $CAL_ANONI_PLATA,
                                CAL_ANONI_BRONCE = $CAL_ANONI_BRONCE,
                                CAL_PINT_BN = $CAL_PINT_BN,
                                CAL_PINT_OTRO = $CAL_PINT_OTRO
                                WHERE CAL_ID = $id" );

        if ( $this->DBConn->filasAfectadas() != -1) {
            return true;
        } else {
            return false;
        }

    }

     /**
     *Elimina un Alumini
     *
     * @param <int> $id
     * @return <bool> true
     * @return <bool> false
     * @test
     *
     */
    public function eliminarAluminio($id) {

        $this->DBConn->consulta( "UPDATE costo_aluminio
                                SET CAL_STATUS = 0
                                WHERE CAL_ID = $id" );

        if ( $this->DBConn->filasAfectadas() != -1) {
            return true;
        } else {
            return false;
        }

    }

     /**
     *Agrega un costoAluminio
     *
     * @param <int> $id
     * @return <bool> true
     * @return <bool> false
     * @test
     *
     */
    public function setCostoAluminio() {
        extract($_GET);

        $CAL_ANONI_PLATA = (str_replace(".","",$CAL_ANONI_PLATA));
        $CAL_ANONI_PLATA = doubleval(str_replace(",",".",$CAL_ANONI_PLATA));

        $CAL_ANONI_BRONCE = doubleval(str_replace(".","",$CAL_ANONI_BRONCE));
        $CAL_ANONI_BRONCE = doubleval(str_replace(",",".",$CAL_ANONI_BRONCE));

        $CAL_PINT_BN = doubleval(str_replace(".","",$CAL_PINT_BN));
        $CAL_PINT_BN = doubleval(str_replace(",",".",$CAL_PINT_BN));

        $CAL_PINT_OTRO = doubleval(str_replace(".","",$CAL_PINT_OTRO));
        $CAL_PINT_OTRO = doubleval(str_replace(",",".",$CAL_PINT_OTRO));

        $this->DBConn->consulta( "INSERT INTO costo_aluminio (CAL_NOMBRE, CAL_TIPO, CAL_CONTENIDO,CAL_ANONI_PLATA
                                ,CAL_ANONI_BRONCE , CAL_PINT_BN, CAL_PINT_OTRO)
                                VALUES ('$CAL_NOMBRE','$CAL_TIPO', '$CAL_CONTENIDO',$CAL_ANONI_PLATA,
                                $CAL_ANONI_BRONCE, $CAL_PINT_BN, $CAL_PINT_OTRO)" );
        
        if ( $this->DBConn->filasAfectadas() != -1) {
            return true;
        } else {
            return false;
        }

    }

    /**
     *modifica todos los precios en un porcentaje dado
     *
     * @return <bool> true
     * @return <bool> false
     * @test
     *
     */
    public function updatePrecioPorPorcentaje() {
        extract($_GET);

        $porcentaje = $porcentaje/100;
        $this->DBConn->consulta( "UPDATE costo_aluminio
                                SET CAL_ANONI_PLATA = CAL_ANONI_PLATA + (CAL_ANONI_PLATA * $porcentaje),
                                CAL_ANONI_BRONCE = CAL_ANONI_BRONCE + (CAL_ANONI_BRONCE * $porcentaje),
                                CAL_PINT_BN = CAL_PINT_BN + (CAL_PINT_BN * $porcentaje),
                                CAL_PINT_OTRO = CAL_PINT_OTRO + (CAL_PINT_OTRO * $porcentaje)
                                WHERE CAL_STATUS = 1" );

        if ( $this->DBConn->filasAfectadas() != -1) {
            return true;
        } else {
            return false;
        }

    }
}
?>
